# 打印list的常用方法
# print(dir(list))

# append 追加元素
# insert 在指定位置前插入元素
# extend 可以将另外一个集合中的元素逐一添加到列表中
book = ['西游记', '水浒传']
book.append('三国演义')
print(book)
book.insert(0, '红楼梦')
print(book)

wuxia = ['天龙八部', '笑傲江湖', '神雕侠侣']
book.extend(wuxia)
print(book)
print(wuxia)

# 修改 根据下标 不能越界
book[4] = '倚天屠龙记'
print(book)
#book[10] = '侠客行'

# 查询
# 判断是否在列表中 in \ not in
print('红楼梦' in book)
print('红楼梦' not in book)

# index 查询索引 第一次出现的索引
print(book.index('红楼梦'))
print(book.count('红楼梦'))

# 删除
# del ：根据索引删除
del book[0]
print(book)

# pop：删除最后一个元素
book.pop()
print(book)

# remove ： 根据值删除 删除第一次出现的值
book.append('西游记')
book.remove('西游记')
print(book)

# 如果元素不存在，则报错
# book.remove('aaa')

# 排序
# sort 按照特定顺序 默认从小到大
list_val = [98,234,23,87,999]
list_val.sort()
print(list_val)
list_val.sort(reverse=True)
print(list_val)

# reverse 列表倒置
list_val.reverse()
print(list_val)

# 复制
# copy 复制一个新的列表
list_val1 = [98,234,23,87,999]
list_val2 = list_val1.copy()
print(list_val2)

# id函数打印在内存中的地址
print(id(list_val1))
print(id(list_val2))

# 列表提取特定的值
new_list = [i for i in range(1,101) if i % 10 == 1]
print(new_list)

# 将两个集合 一个集合key，另外一个是value
result = {}
list1 = ['k1', 'k2', 'k3']
list2 = ['v1', 'v2', 'v3']

# 方式一
for k,v in zip(list1,list2):
    result[k] = v
print(result)

# 方式二
result = {k:v for k,v in zip(list1,list2)}
print(result)

# 方式三
result = dict(zip(list1,list2))
print(result)

# 二维列表指定元素排序
info = [('bill',17),('jack',13),('tom',20)]
new_info = sorted(info,key=lambda x:x[1])
print(new_info)